package cn.wolfcode.controller;

import cn.wolfcode.domain.Employee;
import cn.wolfcode.utils.JsonResult;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;
import java.util.List;

//合乎RESTful规范的控制器
//优化1提出employees
//优化2默认Json
//优化3利用注解替代请求类型
@RestController
@RequestMapping("/employees")
public class EmployeeController {
    /**
     * 查询一个员工
     * 操作资源employees
     * 请求方式get
     * 参数要查询的id
     * 返回值:查询到的员工
     * @return
     */

    @GetMapping("/{id}")
    public Object get(@PathVariable Long id){
        //查询
        System.out.println("进入查询一个方法");
        Employee emp = new Employee(id, "张三", 22);
        return emp;
    }
    /**
     * 查询列表
     * 操作资源employees
     * 请求方式get
     * 参数无
     * 返回值列表
     * @return
     */@GetMapping

    public Object list(){
        //查询所有Employee,返回
        System.out.println("进入查询列表方法");
        List<Employee> list = Arrays.asList(new Employee(1l, "张三", 18), new Employee(2l, "李四", 19));
        return list;
    }
    /**
     * 添加
     * 操作资源employees
     * 请求方式post
     * 参数要添加的员工
     * 返回值:添加的员工
     * @return
     */
    @PostMapping
    public Object save(Employee employee){
        //保存
        System.out.println("进入保存方法");
        saveEmployee(employee);
        return employee;
    }
    /**
     * 修改
     * 操作资源employees
     * 请求方式put
     * 参数要修改的员工
     * 返回值:修改后的员工
     * @return
     */
    @PutMapping
    public Object update(Employee employee){
        //修改
        System.out.println("进入修改");
        return employee;
    }
    /**
     * 删除
     * 操作资源employees
     * 请求方式delete
     * 参数要删除的id
     * 返回值:处理结果
     * @return
     */
    @DeleteMapping(value = "/{id}")
    public Object delete(@PathVariable Long id){
        //删除
        System.out.println("进入删除方法");
        JsonResult result = new JsonResult();
        return result;
    }
    private void saveEmployee(Employee employee) {
        employee.setId(5l);
        System.out.println("以保存"+employee);
    }
}
